﻿using System;
using System.Collections.Generic;
using TFramework.ECS.Entity;

namespace TFramework.ECS.Group.Observable
{
    public interface IObservableGroup : IReadOnlyList<IEntity>
    {
        ObservableGroupToken Token { get; }

        IObservable<IEntity> OnEntityAdded { get; }

        IObservable<IEntity> OnEntityRemoved { get; }

        IObservable<IEntity> OnEntityRemoving { get; }

        bool ContainsEntity(int id);

        IEntity GetEntity(int id);
    }
}